<?php
/**
 * NT Model dispibiliza os método getAll e getWhereId por padrão para as <br/>
 * classes que a extendem. Nome padrão da tabela também, se a tabela for o nome<br/>
 * da classe, apenas use $this->sft para pegar a info da tabela atual
 *
 * @author Níssius Ribas
 */
class NT_Model extends CI_Model{
    
    protected $sft; // SelfTable
    
    public function __construct() {
        parent::__construct();
        $this->sft = get_class($this);
        
    }
    
    /**
     * Função pública para por exemplo poder acessar
     * mas não modificar a parir do controller a tabela
     * em questão
     * 
     * @return string
     */
    public function getSft(){
        return $this->sft;
    }
    
    /**
     * Retorna todos os registros da tabela padrão correspondente a esta model
     * 
     * @return array
     */
    public function getAll(){
        return $this->db->get($this->sft)->result_array();
    }
    
    /**
     * Devolve o registro desta tabela (padrão) onde o campo ID (pk) for o param informado
     * 
     * @param int $id
     * @return array
     */
    public function getWhereId($id){
       $id = intval($id);
       return $this->db->where("ID",$id)->get($this->sft)->row_array();
    }
    

    /**
     * getBy é um atalho para quando houver um where simples, com apenas algum campo.
     * Suporta um campo e ordenação
     * 
     * @param string $whereFieldName
     * @param string $equalsFieldValue
     * @param string $fieldNameToOrderBy
     * @param string $orderDirection
     * @return array Lista de registros encontrados
     */
    public function getBy($whereFieldName,$equalsFieldValue,$fieldNameToOrderBy=false,$orderDirection=false){
        
        // if they are some field to order by
        if($fieldNameToOrderBy){
            
            // with some direction?
            if($orderDirection){
                $this->db->order_by($fieldNameToOrderBy,$orderDirection);
            }else{
                $this->db->order_by($fieldNameToOrderBy); // ASC, default direction
            }
        }
        
        return $this->db->where($whereFieldName, $equalsFieldValue)->get($this->sft)->result_array();
    }
    
}